package cn.powerone.scm.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.powerone.common.annotation.Excel;
import cn.powerone.common.core.domain.BaseEntity;

/**
 * 供应商报价单对象 scm_supplier_quotes
 * 
 * @author PowerOne
 * @date 2025-07-03
 */
@Setter
@Getter
public class ScmSupplierQuotes extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 数据库编号 */
    @Excel(name = "ID")
    private Long id;

    /** 项目ID */
//    @Excel(name = "项目ID")
    private Long projectId;

    /** 产品ID */
//    @Excel(name = "产品ID")
    private Long productId;

    /** 项目产品ID */
    private Long projectProductId;

    /**
     * 图号
     */
//    @Excel(name = "图号")
    private String drawingNumber;

    /**
     * 内部版本号
     */
//    @Excel(name = "内部版本号")
    private Long internalVersion;

    /** 供应商ID */
//    @Excel(name = "供应商ID")
    private Long supplierId;

    /** 报价单编号 */
//    @Excel(name = "报价单编号")
    private String quoteCode;

    /** 关联询价单ID */
//    @Excel(name = "关联询价单ID")
    private Long inquiryId;

    /** 供应商名称 */
//    @Excel(name = "供应商名称")
    private String supplierName;

    /** 询价日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "询价日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date inquiryDate;

    /** 报价日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "报价日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date quoteDate;

    /** 绘图材质 */
//    @Excel(name = "绘图材质")
    private String drawingMaterial;

    /** 材质 */
//    @Excel(name = "材质")
    private String material;

    /** 阻燃等级 */
//    @Excel(name = "阻燃等级")
    private String inflamingRetardingLevel;

    /** 是否含税 */
    @Excel(name = "是否含税")
    private String taxIncluded;

    /** 是否含运费 */
    @Excel(name = "是否含运费")
    private String freightIncluded;

    /** 一次性数量 */
    @Excel(name = "一次性数量")
    private BigDecimal disposableQuantity;

    /** 一次性单位 */
    @Excel(name = "一次性单位")
    private String disposableUnit;

    /** 一次性单位单价 */
    @Excel(name = "一次性单位单价")
    private BigDecimal disposableUnitPrice;

    /** 试做数量 */
    @Excel(name = "试做数量")
    private BigDecimal tryLot;

    /** 试做单位 */
    @Excel(name = "试做单位")
    private String tryUnit;

    /** 试做单位单价 */
    @Excel(name = "试做单位单价")
    private BigDecimal tryUnitPrice;

    /** 试做总价 */
    @Excel(name = "试做总价")
    private BigDecimal tryTotalPrice;

    /** 量产数量 */
    @Excel(name = "量产数量")
    private BigDecimal massLot;

    /** 量产单位 */
    @Excel(name = "量产单位")
    private String massUnit;

    /** 量产单位单价 */
    @Excel(name = "量产单位单价")
    private BigDecimal massUnitPrice;

    /** 模具费 */
    @Excel(name = "模具费")
    private BigDecimal moldCost;

    /** 工装费 */
    @Excel(name = "工装费")
    private BigDecimal jigCost;

    /** 模具试做天数 */
    @Excel(name = "模具试做天数")
    private Long moldTryingDeliveryDays;

    /** 模具使用寿命(次) */
    @Excel(name = "模具使用寿命(次)")
    private Long moldLife;

    /** 一次性交付天数 */
    @Excel(name = "一次性交付天数")
    private Long disposableDeliveryDays;

    /** 试做交付天数 */
    @Excel(name = "试做交付天数")
    private Long tryDeliveryDays;

    /** 量产交付天数 */
    @Excel(name = "量产交付天数")
    private Long massDeliveryDays;

    /** 状态 1:採用,2:不採用,3:廃棄,0:- */
//    @Excel(name = "状态 1:採用,2:不採用,3:廃棄,0:-")
    private Long status;

    /** 状态原因 */
//    @Excel(name = "状态原因")
    private String statusReason;

    /** 关联的项目产品信息 */
//    @Excel(name = "关联的项目产品信息")
    private ScmProjectProducts scmProjectProducts;

    /** 供应商币种 */
    @Excel(name = "供应商币种")
    private String supplierCurrency;

    /** 供应商币种汇率 */
    @Excel(name = "供应商币种汇率")
    private BigDecimal supplierCurrencyRate;

    /** 备注 */
    @Excel(name = "备注")
    private String remarks;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectId", getProjectId())
            .append("productId", getProductId())
                .append("projectProductId", getProjectProductId())
                .append("drawingNumber", getDrawingNumber())
                .append("internalVersion", getInternalVersion())
            .append("supplierId", getSupplierId())
            .append("quoteCode", getQuoteCode())
            .append("inquiryId", getInquiryId())
            .append("supplierName", getSupplierName())
            .append("inquiryDate", getInquiryDate())
            .append("quoteDate", getQuoteDate())
            .append("drawingMaterial", getDrawingMaterial())
            .append("material", getMaterial())
            .append("inflamingRetardingLevel", getInflamingRetardingLevel())
            .append("taxIncluded", getTaxIncluded())
            .append("freightIncluded", getFreightIncluded())
            .append("disposableQuantity", getDisposableQuantity())
            .append("disposableUnit", getDisposableUnit())
            .append("disposableUnitPrice", getDisposableUnitPrice())
            .append("tryLot", getTryLot())
            .append("tryUnit", getTryUnit())
            .append("tryUnitPrice", getTryUnitPrice())
            .append("tryTotalPrice", getTryTotalPrice())
            .append("massLot", getMassLot())
            .append("massUnit", getMassUnit())
            .append("massUnitPrice", getMassUnitPrice())
            .append("moldCost", getMoldCost())
            .append("jigCost", getJigCost())
            .append("moldTryingDeliveryDays", getMoldTryingDeliveryDays())
            .append("moldLife", getMoldLife())
            .append("disposableDeliveryDays", getDisposableDeliveryDays())
            .append("tryDeliveryDays", getTryDeliveryDays())
            .append("massDeliveryDays", getMassDeliveryDays())
            .append("status", getStatus())
            .append("statusReason", getStatusReason())
            .append("remarks", getRemarks())
            .append("supplierCurrency", getSupplierCurrency())
            .append("supplierCurrencyRate", getSupplierCurrencyRate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }

}